Synchronized transmission of audio and video data from a computer to a client via an interface

ABSTRACT

A method for controlling data transmission between a computer and a video client via an interface, the method comprising: the computer polling the interface a first time to determine the size of the buffer on the interface; receiving a first buffer size value from the interface; sending a plurality of frames of video and audio data to the buffer on the interface such that a delay period exists between the sending of each frame; the computer polling the interface a second time to determine buffer size after the frames are sent to the interface; receiving a second buffer size value from the interface; and modifying the amount of time between the transmission of frames.

RELATED APPLICATIONS

This application claims priority from provisional patent applicationSer. No. 60/478,336, filed with the United States Patent and Trademarkoffice on Jun. 13, 2003.

FIELD OF THE INVENTION

The present invention relates broadly to devices in communication over anetwork. Specifically, the present invention relates to data flowmanagement between devices transmitting and receiving data at differenttransmission rates. More specifically, the present invention relates tocontrolling data flow through a buffer by monitoring the buffer andadjusting data transmission based on buffer conditions.

BACKGROUND OF THE INVENTION

A “bus” is a collection of signals interconnecting two or moreelectrical devices that permits one device to transmit information toone or more other devices. There are many different types of busses usedin computers and computer-related products. Examples include thePeripheral Component Interconnect (“PCI”) bus, the Industry StandardArchitecture (“ISA”) bus and Universal Serial Bus (“USB”), to name afew. The operation of a bus is usually defined by a standard whichspecifies various concerns such as the electrical characteristics of thebus, how data is to be transmitted over the bus, how requests for dataare acknowledged, and the like. Using a bus to perform an activity, suchas transmitting data, requesting data, etc., is generally called runninga “cycle.” Standardizing a bus protocol helps to ensure effectivecommunication between devices connected to the bus, even if such devicesare made by different manufacturers. Any company wishing to make andsell a device to be used on a particular bus, provides that device withan interface unique to the bus to which the device will connect.Designing a device to particular bus standard ensures that device willbe able to communicate properly with all other devices connected to thesame bus, even if such other devices are made by differentmanufacturers. Thus, for example, an internal fax/modem (ie., internalto a personal computer) designed for operation on a PCI bus will be ableto transmit and receive data to and from other devices on the PCI bus,even if each device on the PCI bus is made by a different manufacturer.

Currently, there is a market push to incorporate various types ofconsumer electronic equipment with a bus interface that permits suchequipment to be connected to other equipment with a corresponding businterface. For example, digital cameras, digital video recorders,digital video disks (“DVDs”), printers are becoming available with anIEEE 1394 bus interface. The IEEE (“Institute of Electrical andElectronics Engineers”) 1394 bus, for example, permits a digital camerato be connected to a printer or computer so that an image acquired bythe camera can be printed on the printer or stored electronically in thecomputer. Further, digital televisions can be coupled to a computer orcomputer network via an IEEE 1394 bus.

However, many devices exist without any sort of IEEE 1394 interface.This presents a problem as such devices are unable to be to be connectedwith other devices as described above. There is a heartfelt need toovercome this problem to provide connectivity to devices that otherwisecannot be connected to a IEEE 1394 bus.

SUMMARY OF THE INVENTION

The present invention controls the transmission of data from a computerto a video client via an interface device that buffers the data framessent and communicates to the computer and the video client usingdifferent protocols. In an embodiment, the present invention provides amethod of performing data transmission flow control by polling theinterface a first time to determine the size of the buffer on theinterface; receiving a first buffer size value from the interface;sending a plurality of frames of video and audio data to the buffer onthe interface such that a delay period exists between the sending ofeach frame; polling the interface a second time to determine buffer sizeafter the frames are sent to the interface; and receiving a secondbuffer size value from the interface. If the second buffer size value islarger than the optimal size, and larger than the first buffer sizevalue, then the delay period between transmission of frames from thecomputer to the interface is increased.

In another embodiment, the present invention provides a method ofperforming data transmission flow control, by polling the interface afirst time to determine the size of the buffer on the interface;receiving a first buffer size value from the interface; sending aplurality of frames of video and audio data to the buffer on theinterface such that a delay period exists between the sending of eachframe; polling the interface a second time to determine buffer sizeafter the frames are sent to the interface; and receiving a secondbuffer size value from the interface.

If the second buffer size value is smaller than optimal size, andsmaller than the first buffer size value, then the delay period betweentransmission of frames from the computer to the interface is decreased.

Many other features and advantages of the present invention will berealized by reading the following detailed description, when consideredin conjunction with the accompanying drawings, in which:

BRIEF DESCRIPTION OF THE DRAWINGS

FIG. 1 illustrates in block diagram form major components used inconnection with embodiments of the present invention;

FIG. 2 illustrates the format of a frame in accordance with embodimentsof the present invention;

FIGS. 3A and 3B illustrate the format of the first data packet andfollowing data packet, respectively;

FIGS. 4A and 4B illustrate the organization of video data within datapackets in accordance with the embodiments of the present invention;

FIGS. 5A and 5B illustrate the organization of audio data within datapackets in accordance with the embodiments of the present invention;

FIGS. 6 and 7 illustrate elements of a header included in the frame inaccordance with embodiments of the present invention;

FIG. 8 illustrates a collection of packets that combine to form a framein accordance with embodiments of the present invention;

FIGS. 9A-9D illustrates an alternative embodiment of the presentinvention in which variations of SDTI frames are used in accordance withembodiments of the present invention;

FIG. 9E illustrates an alternative embodiment in which the transmitterdivides the SDTI stream across multiple channels;

FIG. 10 illustrates in flow chart form acts performed to provideexternal clocking between a computer and a hardware interface inaccordance with embodiments of the present invention;

FIG. 11 illustrates the register memory map for the interface device inaccordance with embodiments of the present invention;

FIG. 12 illustrates organization of A/V global registers containedwithin the interface of the present invention;

FIG. 13 illustrates organization of global status registers containedwithin the interface device of the present invention;

FIG. 14 illustrates the isochronous control register contained in theinterface device of the present invention;

FIG. 15 illustrates the organization of the flow control registercontained in the interface device of the present invention; and

FIG. 16 illustrates the organization of the isochronous channel registercontained in the interface device of the present invention.

DETAILED DESCRIPTION

Directing attention to FIG. 1, there is shown in block diagram formcomponents connected to transmit audio and video data between a computer100 and client 102, connected by bus 104 to interface 106. Computer 100in the preferred embodiment is a computing device capable of processingand video and audio data and displaying it in a recognizable form to auser. Such devices include desktop, laptop, and palmtop computers.Client 102 as referred to herein is a video consumer or video producer,and includes such devices as digital cameras, and video storage devices,such as linear and random access devices. Bus 104, as referred toherein, includes a physical connection between computer 100 andinterface 106, as well as the serial protocol adhered to by devicescommunicating over bus 104. In the preferred embodiment, bus 104utilizes the IEEE 1394 serial bus protocol known as Firewire. Interface106 accepts from client 102 both analog and digital inputs, and convertsthe input to scanned lines that can be used by an audio/video playerexecuted on computer 100. In an alternative embodiment, interface 106accepts from client 102 a digital compressed/uncompressed signal andtransmits the entire signal or subsets of that signal. In an embodiment,interface 106 divides the input into frames 108 them over bus 104 tocomputer 100.

The format of frame 108 is illustrated in FIG. 2. Frame 108 includes aframe header 110, video block 112, audio block 114, and optionally anaudio header 116. Audio data in audio block 114 is sampled with respectto the video data in video block 112. The audio sample count per framevaries in accordance with the number defined in the ANSI/SMPTE 272Mspecification, incorporated herein by reference in its entirety. Theaudio sample count cadence is necessary to divide the integer number ofsamples per second across the NTSC frame rate (29.97 fps). Similarly,the size of frame 108 can vary to accommodate various video formats suchas PAL or NTSC, and 8 or 10 bit video data, and audio formats such as 48Khz and 96 Khz 16 and 24 bit etc. Similarly, the frame size ofcompressed data can vary to accommodate the compressed format. In anembodiment, video block 112 and audio block or compressed block are of apredetermined size, to make parsing frame 108 simple and requiringlittle processing overhead by applications such as direct memory accessprograms. In the event that not all of video block 112 or audio block114 is not completely full of data, the remaining portions of blocks112, 114 can be filled with zeros. In one embodiment, data contained invideo block 112 and audio block 114 is not compressed, further reducingprocessing overhead on interface 106, as well as processing overheadrequired by decompression programs running on computer 100.

Interface 106, upon converting the input received from client 102 andconverting it to scan lines and organizing it into frames 108, sends aframe at each vertical blanking interval to provide synchronization withcomputer 100. Computer 100 can derive the vertical blanking intervalfrom the frequency of frames received and synchronize itself with theaudio and video data of the incoming frames 108 received from interface106. In this manner, processing resources are preserved, as there is noneed to perform synchronization on each frame as it is received, thusproviding higher quality performance of audio and video display oncomputer 100.

FIGS. 3A and 3B illustrate the format of the first data packet andfollowing data packet, respectively.

FIGS. 4A and 4B illustrate the organization of video data within datapackets. FIGS. 5A and 5B illustrate the organization of audio datawithin data packets.

FIG. 6 illustrates the contents of frame header 110. Included are formatflags 130, which indicate how many bits per sample, SMPTE time code 132,incrementing frame counter 134, audio cycle count 136, audio samplecount 138, channel count 140, block size byte count 142, audio formatflags 144, and video format flags 146. Audio sample count 138 indicatesa number of samples, which is in accordance with a cadence. The value inaudio cycle count 136 indicates location within the cadence. A cadenceof frames form a cycling pattern. In an alternative embodiment, some ofthe contents of frame header 110 can be moved or copied to optionalaudio header 116. An alternative view of frame header 110 is shown inFIG. 7, showing byte count, data length, and a frame bit.

As illustrated in FIG. 8, frame 108 is constructed from a plurality ofpackets 150 of a predetermined size. Associated with each packet is an1394 isochronous packet header. Data transmission in accordance with thepresent invention takes advantage of a synchronization bit to find thebeginning of a frame. The first packet in frame 108 is marked with thesynchronization bit. This allows the stream of data to be identified bycomputer 100 as it is received, further reducing processing overhead byallowing computer 100 to synchronize the flow of frames received frominterface 106.

In an alternative embodiment of the present invention, frames adheringto the serial digital interface (SDI) standard can be utilized asillustrated in FIGS. 9A through 9E. In these embodiments, bus 104adheres to the IEEE 1394B serial bus protocol to accommodate data raterestrictions set forth by the SDI standard. As described above,interface 106 forms frames from received input by creating scannedlines, performing deinterlacing, packetizing, and creating fixed-sizeSDTI frames of audio and video data. Various modifications can be madeto SDTI frames, depending on the processing resources available oncomputer 100, interface 106, client 102, or other device. As describedabove, the transmission of SDTI frames sent over bus 104 aresynchronized to the vertical blanking interval of the accepted signal.

As shown in FIG. 9A, SDTI frame 160 generally has two components:vertical blanking portion 162 and horizontal retrace 164. Alternatively,in another embodiment (FIG. 9B), SDI frame header 166, a header having asynchronization bit and a frame count, is added to SDTI frame 160 forfurther synchronization and fault detection purposes, such as recoveringfrom data lost in transmission or the occurrence of a bus reset. In thisembodiment, a frame count synchronization bit is included in SDTI frameheader 166 and SDTI frame header 166 is synchronized with verticalblanking portion 162. For example, in an application where interface 106is unable to read compressed data, or excessive upgrades to interface106 would be required, SDTI frame 160 can be transmitted to computer100, where processing on the SDTI stream is performed by software in anon-realtime manner. Alternatively, as shown in FIG. 9C, SDTI frame 160can be constructed without horizontal retrace 164 to further reduceprocessing overhead. An SDTI frame constructed without a horizontalretrace but having header 166, can also be utilized in an embodiment, asshown in FIG. 9D. In yet another embodiment, as shown in FIG. 9E, theSDTI frame can be split between multiple channels and also include SDTIframe header 166. In this embodiment, the transmitter splits the SDTIstream in half, with half of the lines being transmitted across channelA, the other half being transmitted across channel B. An attached headerfor each partial frame can be used to assist in re-combining frame data.

In another aspect of the present invention, external clocking can beutilized to synchronize data transmission between computer 100,interface 106 and client 102. In an embodiment, client 102 includes ahigh-quality reference clock 180 (FIG. 1) that can be used tosynchronize clock 182 on interface 106 and prevent overflow of buffer184 on interface 106. In this embodiment, the value of reference clock180 on client 102 is derived on interface 106 from the frequency atwhich data is transmitted from computer 102 to interface 106. To performflow control, cycles are skipped between transmission of frames. Askipped cycle increases the amount of time between transmissions offrames, to slow the data rate of the frame transmission. Directingattention to FIG. 10, at reference numeral 200, computer polls interface106 to read the size of buffer 184. While for exemplary purposes thebuffer is referred to in terms such as “bigger” and “smaller,” it is tobe understood that in the case of a fixed-size buffer bigger and smallerrefer to fullness of the buffer. At reference numeral 202, computer 100then sends a plurality of frames to interface 106. At reference numeral204, computer 100 again polls interface 106 to determine the size ofbuffer 184. If buffer 184 has grown in size from the last poll of itssize (decision reference numeral 206), control proceeds to referencenumeral 208, where computer 100 increases the delay between frames it issending to interface 106. In an embodiment, the delay between framessent is 125 milliseconds. In another embodiment a fractional delay isattained by modulating the delay over a number of frames. For instanceif a delay between frames of 2.5 times 1.25 microseconds is required,alternating frame delays of 2 and 3 cycles (of 125 microseconds) areinterspersed. Control then returns to reference numeral 202, where theframes are sent to interface 106 with the additional delay betweenframes. However, returning to decision reference numeral 206, if buffer184 has not grown in size since the last polling of its size, controltransitions to decision reference numeral 210. At decision referencenumeral 210, if buffer 206 has decreased in size, control transitions toreference numeral 212, where the delay between frames sent from computer100 to interface 106 is decreased. In an embodiment, the amount of thisdecrease is also 125 Ms. Control then transitions to reference numeral202, where the frames are sent from computer 100 to interface 106 withthe reduced delay between frames. Returning to decision referencenumeral 210, if the size of buffer 184 has not reduced since the lastpolling of the size of buffer 184, then no adjustment to the delaybetween frames is necessary, and control transitions to referencenumeral 202.

Interface 106 includes a serial unit 300 for enabling communicationacross bus 104. Serial unit 300 includes a unit directory 302 as shownin Table 1.

TABLE 1 Name Key Value Unit_Spec_ID 0x12 0x000a27 Unit_SW_Version 0x130x000022 Unit_Register_Location 0x54 Csr_offset to registersUnit_Signals_Supported 0x55 Supported RS232 signals

The Unit_Spec_ID value specifies the organization responsible for thearchitectural definition of serial unit 300. The Unit_SW_Version value,in combination with Unit_Spec_ID value, specifies the software interfaceof the unit. The Unit_Register_location value specifies the offset inthe target device's initial address space of the serial unit registers.The Unit_Signals_Supported value specifies which RS-232 signals aresupported, as shown in the Table 2. If this entry is omitted from theserial unit directory 302, then none of these signals are supported.

TABLE 2 Field Bit Description Ready to Send (RTS) 0 Set if RTS/RFR issupported Clear to Send (CTS) 1 Set if CTS is supported Data Set ready(DSR) 2 Set if DSR is supported Data Transmit Ready (DTR) 3 Set if DTRis supported Ring Indicator (RI) 4 Set if RI supported Carrier (CAR) 5Set if CAR/DCD is supported Reserved [31 . . . 6] Reserved

Also included in serial unit 300 is a serial unit register map 304 thatreferences registers contained in serial unit 300. The organization ofserial unit register map 304 is shown in Table 3.

TABLE 3 Hex Offset Name Access Size(quads) Value 0x0 Login W 2 Addressof initiator's serial registers 0x8 Logout W 1 Any value 0xc Reconnect W1 Initiator's node ID 0x10 TxFIFO R 1 Size in bytes of Tx FIFO Size 0x14RxFIFO R 1 Size in bytes of Rx FIFO Size 0x18 Status R 1 CTS/DSR/RI/CAR0x1c Control W 1 DTR/RTS 0x20 Flush W 1 Any value TxFIFO 0x24 Flush W 1Any value RxFIFO 0x28 Send Break W 1 Any value 0x2c Set Baud W 1 Baudrate 300−>230400 Rate 0x30 Set Char W 1 7 or 8 bit characters Size 0x34Set Stop W 1 1, 1.5 or 2 bits Size 0x38 Set Parity W 1 None, odd or evenparity 0x3c Set Flow W 1 None, RTS/CTS or Control Xon/Xoff 0x40 Reserved— 4 Reserved 0x50 Send Data W TxFIFO size Bytes to transmit

Serial unit register map 304 references a login register. A deviceattempting to communicate with serial unit 300, is referred to herein asan initiator. For example, an initiator can be computer 100, or othernodes connected on a network via a high-speed serial bus and incommunication with interface 106. The initiator writes the 64 bitaddress of the base of its serial register map to the login register tolog into serial unit 300. If another initiator is already logged in,serial unit 300 returns a conflict error response message. The high 32bits of the address are written to the Login address, the lower 32 bitsto Login+4. The serial unit register map also references a logoutregister. The initiator writes any value to this register to log out ofthe serial unit. After every bus reset the initiator must write its(possibly changed) nodeID to the reconnect register. If the initiatorfails to do so within one second after the bus reset it is automaticallylogged out. The 16-bit nodeID is written to the bottom 16 bits of thisregister, the top 16 bits should be written as zero. A read of theTxFIFOSize register returns the size in bytes of the serial unit'stransmit FIFO. A read of the RxFIFOSize register returns the size inbytes of serial unit 300's receive FIFO. A read of the status registerreturns the current state of CTS/DSR/RI/CAR (if supported). The statusregister is organized as shown in Table 4.

TABLE 4 Field Bit Description CTS 0 1 if CTS is high, else 0 DSR 1 1 ifDSR is high, else 0 RI 2 1 if RI is high, else 0 CAR 3 1 if CAR is high,else 0 Reserved [31 . . . 4] Always 0

A write to the control register sets the state of DTR and RTS (ifsupported). The organization of the control register is shown in Table5.

TABLE 5 Field Bit Description RTS 0 If 1 set RTS high, else set RTS lowDTR 1 If 1 set DTR high, else set DTR low Reserved [31 . . . 2] Always 0

A write of any value to the FlushTxFIFO register causes serial unit 300to flush its transmit FIFO, discarding any bytes currently in it. Awrite of any value to the FlushRxFIFO register causes the serial unit toflush its receive FIFO, discarding any bytes currently in it. A write ofany value to the send break register causes serial unit 300 to set abreak condition on its serial port, after transmitting the currentcontents of the TxFIFO. A write to the set baud rate register setsserial unit 300's serial port's baud rate. The set baud rate register isorganized as shown in Table 6.

TABLE 6 Value written Baud Rate 0 300 1 600 2 1200 3 2400 4 4800 5 96006 19200 7 38400 8 57600 9 115200 10 230400

The set char size register sets the bit size of the characters sent andreceived. The organization of the set char size register is shown inTable 7. 7 bit characters are padded to 8 bits by adding a pad bit asthe most significant bit.

TABLE 7 Value written Character bit size 0 7 bits 1 8 bits

The set stop size register designates the number of stop bits. The setstop size register is organized as shown in Table 8.

TABLE 8 Value written Stop bits 0 1 bit  1 1.5 bits   2 2 bits

The set parity register sets the serial port parity. The organization ofthe set parity register is shown in Table 9.

TABLE 9 Value written Parity 0 No Parity bit 1 Even parity 2 Odd parity

The set flow control register sets the type of flow control used by theserial port. The organization of the set flow register is shown in Table10.

TABLE 10 Value written Flow Control 0 None 1 CTS/RTS 2 XOn/Xoff

The send data register is used when the initiator sends block writerequests to this register to write characters into the transmit FIFO.Block writes must not be larger than the transmit FIFO size specified bythe TxFIFOSize register. If there isn't enough room in the Tx FIFO forthe whole block write, then a conflict error response message isreturned and no characters are copied into the FIFO.

Also included in serial unit 300 is an initiator register map having aplurality of registers, organized as shown in Table 11.

TABLE 11 Hex Offset Name Access Size (quads) Value 0x0 Break W 1 Anyvalue 0x4 Framing Error W 1 Received character 0x8 Parity Error W 1Received character 0xc RxFIFO overflow W 1 Any value 0x10 Status changeW 1 CTS/DSR/RI/CAR 0x14 Reserved — 3 Reserved 0x20 Received Data WRxFIFO size Bytes received

When serial unit 300 detects a break condition on its serial port, itwrites an arbitrary value to this register. When serial unit 300 detectsa framing error on its serial port, it writes the received character tothe framing register. When serial unit 300 detects a parity error on itsserial port, it writes the received character to the parity errorregister. When serial unit 300's receive FIFO overflows, serial unit 300writes an arbitrary value to the RxFIFO overflow register. When serialunit 300 detects a change in state of any of CTS/DSR/RI/CAR it writes tothe status change register indicating the new serial port signal state.The organization of the status register is shown in table 12.

TABLE 12 Field Bit Description CTS 0 1 if CTS is high, else 0 DSR 1 1 ifDSR is high, else 0 RI 2 1 if RI is high, else 0 CAR 3 1 if CAR is high,else 0 Reserved [31 . . . 4] Always 0

When serial unit 300 receives characters from its serial port it writesthe received characters to the received data register with a block writetransaction. It never writes more bytes than the receive FIFO sizespecified by the RxFIFOSize register. If the initiator cannot receiveall the characters sent it responds with a conflict error responsemessage and receives none of the characters sent.

FIG. 11 illustrates the register memory map for the interface device inaccordance with embodiments of the present invention. FIG. 12illustrates organization of A/V global registers contained within theinterface of the present invention. FIG. 13 illustrates organization ofglobal status registers contained within the interface device of thepresent invention. FIG. 14 illustrates the isochronous control registercontained in the interface device of the present invention. FIG. 15illustrates the organization of the flow control register contained inthe interface device of the present invention. FIG. 16 illustrates theorganization of the isochronous channel register contained in theinterface device of the present invention.

In another embodiment of the present invention, a synthesized verticalblanking signal is derived by polling a vertical blanking register oninterface 106. The vertical blanking signal invokes code to programsrunning on computer 100. In an embodiment, timing information may alsobe provided to programs running on computer 100, either in combinationwith the invoked code or instead of the invoked code. In an embodimentof the invention, interface 106 contains a register that holds a counterindicating current progress in the frame, from which the next verticalretrace can be extrapolated or otherwise derived. By deriving boundarieson frame transmission, other data that is within the frame andsynchronized to the occurrence of a vertical blanking interval can belocated and accessed, such as for sampling operations. Additionally, anembodiment of the present invention derives frame boundaries forlocating data that is coincident with the vertical blanking interval butincludes no information about the vertical blanking In an embodiment,the present invention is used to obtain data that is valid for a periodafter the occurrence of a video blanking interval, such as a time codecontained within the frame, can be read, and used in various processingapplications. In an embodiment, computer 100 can then schedule aninterrupt to fire at this extrapolated time, thus sending out a frame.

1.-12. (canceled)
 13. In a system having a computer, a video client, andan interface coupled between the computer and video client, theinterface having a buffer adapted to store data frames received from thecomputer to be sent to the video client, a method of performing datatransmission flow control, the method comprising: determining a firstfill amount of the buffer; sending a plurality of frames of data in anisochronous manner to the buffer via the interface such that a delayperiod exists between the sending of at least a portion of saidplurality of frames; determining a second buffer fill amount after theplurality of frames are sent to the buffer on the interface; and varyingthe delay period between transmission of frames from the computer to thebuffer on the interface based in part on the second buffer fill amount.14. The method of claim 13, wherein the size of at least one frame ofsaid plurality of frames varies to accommodate various video formats.15. The method of claim 13, wherein each frame of said plurality offrames comprises a NTSC format frame.
 16. The method of claim 13,wherein each frame of said plurality of frames comprises a PAL formatframe.
 17. The method of claim 13, wherein a video portion and an audioportion of each frame of said plurality of frames are of a predeterminedsize.
 18. The method of claim 17, wherein any empty portions of thevideo portion and the audio portion of each frame in said plurality offrames are filled with zeros.
 19. The method of claim 13, wherein saiddelay period existing between the sending of at least a portion of saidplurality of frames comprises a delay period of the same size betweeneach of said plurality of frames.
 20. The method of claim 13, whereinsaid delay period existing between the sending of at least a portion ofsaid plurality of frames comprises a delay period that varies in sizebetween different sets of said plurality of frames.
 21. A computerreadable apparatus having a storage medium containing instructionswhich, when executed by a computer, perform data transmission flowcontrol by: polling an interface buffer in communication with thecomputer to determine a first buffer fill amount, the buffer storingdata frames received from the computer, the buffer having a fill amountthat varies with the amount of data contained in the buffer; sending aplurality of frames of data in an isochronous manner to the buffer ofthe interface such that a delay period exists between the sending of atleast some of the frames; polling the interface to determine a secondbuffer fill amount, said polling to determine said second fill amountoccurring after the plurality of frames are sent to the buffer; andmodulating the delay period between frames in a subsequent transmissionfrom the computer to the buffer based at least in part on the relativesize of the second buffer fill amount as compared with the first bufferfill amount.
 22. The computer readable storage medium of claim 21,wherein a video portion and an audio portion of each frame of saidplurality of frames are of a predetermined size.
 23. The computerreadable storage medium of claim 22, wherein said modulating comprisesinserting delay periods of different sizes between transmission of atleast two sets of sequential frames.
 24. The computer readable storagemedium of claim 21, wherein said modulating based at least in part onthe relative size of the second buffer fill amount as compared with thefirst buffer fill amount comprises maintaining said buffer level atapproximately an optimal level.
 25. The computer readable storage mediumof claim 21, wherein said modulating based at least in part on therelative size of the second buffer fill amount as compared with thefirst buffer fill amount comprises preventing an overflow condition andan underflow condition within said buffer.
 26. The computer readablestorage medium of claim 21, wherein said interface is in datacommunication with said computer via a standardized bus utilizing aserialized protocol.
 27. The computer readable storage medium of claim21, wherein the size of each frame of said plurality of frames varies toaccommodate various video formats.
 28. In a system having a computer, avideo client, and an interface coupled between the computer and videoclient that facilitates data transmission between the computer and thevideo client, the interface connected to the computer via a standardizedbus, the interface having a buffer for storing data frames received fromthe computer to be sent to the video client, an apparatus for performingdata transmission flow control, the apparatus comprising: apparatusadapted to determine the fill amount of the buffer on the interface at afirst time; apparatus adapted to send a plurality of frames of data inan isochronous manner to the buffer on the interface such that a delayperiod exists between the sending of at least a portion of the pluralityof frames; apparatus adapted to determine a second buffer fill amountafter the plurality of frames are sent to the buffer on the interface;and apparatus adapted to vary the delay period based at least in part onthe second buffer fill amount and an optimal buffer fill level.
 29. Theapparatus of claim 28, wherein each frame of said plurality of framescomprises a NTSC format frame.
 30. The apparatus of claim 28, whereinthe size of at least several frames of said plurality of frames variesto accommodate various video formats.
 31. The apparatus of claim 30,wherein said interface receives signals from said video client andconverts said signals into a second plurality of frames, and sends oneframe from said second plurality of frames to said computer at eachvertical blanking interval.
 32. A device adapted for performing datatransmission flow control, comprising: apparatus adapted to determine afirst fill amount of a buffer on an interface between a computer and avideo client; apparatus adapted to send a plurality of frames of data inan isochronous manner to the buffer on the interface such that a delayperiod exists between the sending of each frame; apparatus adapted todetermine a second fill amount of the buffer on the interface after theframes are sent to the buffer on the interface; and apparatus adapted toincrease or decrease the delay period between the sending of frames tothe buffer on the interface based at least in part on the second bufferfill amount.
 33. The device of claim 32, wherein the size of at leastone frame of said plurality of frames varies to accommodate variousvideo formats.
 34. The device of claim 32, wherein each frame of saidplurality of frames comprises an NTSC format frame.
 35. The device ofclaim 32, wherein each frame of said plurality of frames comprises a PALformat frame.
 36. The device of claim 32, wherein a video portion and anaudio portion of each frame of said plurality of frames are of apredetermined size.
 37. The device of claim 36, wherein any emptyportions of the video portion and the audio portion of each frame insaid plurality of frames are filled with zeros.
 38. The device of claim32, wherein the interface is in data communication with the computer viaa bus utilizing a serialized protocol.
 39. A device adapted forperforming data transmission flow control, comprising: a computerreadable storage medium containing instructions which, when executed bya computer, performs the acts of: determining a first fill amount of abuffer on an interface between a computer and a video client, whereinthe buffer on the interface facilitates data transmission between thecomputer and the video client; sending a plurality of frames of data tothe buffer on the interface such that a delay period exists between thesending of at least some of the plurality of frames; determining asecond fill amount of the buffer on the interface after the frames aresent to the buffer on the interface; and modulating the delay periodbetween transmission of individual ones of said frames from the computerto the buffer on the interface based in part on the second buffer fillamount.
 40. The device of claim 39, wherein the size of at least oneframe of said plurality of frames varies to accommodate various videoformats.
 41. The device of claim 39, wherein each frame of saidplurality of frames comprises an NTSC format frame.
 42. The device ofclaim 39, wherein each frame of said plurality of frames comprises a PALformat frame.
 43. The device of claim 39, wherein a video portion and anaudio portion of each frame of said plurality of frames are of apredetermined size.
 44. The device of claim 39, wherein any emptyportions of a video portion and an audio portion of each frame in saidplurality of frames are filled with zeros.
 45. The device of claim 39,wherein the interface is in data communication with the computer via abus utilizing a serialized bus protocol.
 46. A method of performing datatransmission flow control, comprising: determining a first fill amountof a buffer on an interface between a computer and video client, whereinthe buffer on the interface facilitates data transmission between thecomputer and the video client; sending a plurality of frames to thebuffer on the interface such that a delay period exists between thesending of at least some of the frames; determining a second fill amountof the buffer on the interface after the frames are sent to the bufferon the interface; and if the second buffer fill amount value is smallerthan an optimal fill amount, and smaller than the first buffer fillamount value, decreasing the delay period between the sending of saidframes to the buffer on the interface, and if the second buffer fillamount value is larger than the optimal fill amount, and larger than thefirst buffer fill amount value, increasing the delay period between thesending of said frames to the buffer on the interface.
 47. The method ofclaim 46, wherein the size of at least one frame of said plurality offrames varies to accommodate various video formats.
 48. The method ofclaim 46, wherein each frame of said plurality of frames comprises anNTSC format frame.
 49. The method of claim 46, wherein each frame ofsaid plurality of frames comprises a PAL format frame.
 50. The method ofclaim 46, wherein a video portion and an audio portion of each frame ofsaid plurality of frames are of a predetermined size.
 51. The method ofclaim 46, wherein any empty portions of a video portion or an audioportion of each frame in said plurality of frames are filled with zeros.52. The method of claim 46, wherein the interface is in datacommunication with the computer via a bus utilizing a serialized busprotocol.